//axios 进行二次封装
import axios from 'axios';
import nprogress from 'nprogress';
//引入Vuex仓库模块
import store from '@/store';
//引入进度条样式
import 'nprogress/nprogress.css'
//创建axios实例创建出来的即为axios，只不过是可以配置的东西
let instance = axios.create({
    baseURL: "/api",
    //设置请求时间 （毫秒）
    timeout: 5000
})
//设置请求拦截器
instance.interceptors.request.use((config) => { 
    //通过上行的请求头，把用户临时身份带给服务器
    //请求头添加的名字不能瞎写，因为已经和后台人员商量好了
    //如果不叫userTempId字段，服务器获取不到
    //config配置，这里有个请求头 
    //config请求拦截器的一个配置对象
    //配置用户临时的UUid
    if(store.state.shopcart.userTempId){
        config.headers.userTempId = store.state.shopcart.userTempId;
    }
     //配置用户登录成功后获取到的token
     if(store.state.user.token){
        config.headers.token = store.state.user.token;
     }
    nprogress.start()
    return config;
});
//设置响应拦截器
instance.interceptors.response.use((res) => {
    //测试响应拦截器的返回的数据
    // console.log(res.data)
    nprogress.done()
    return res.data;
}, (error) => {
    return Promise.reject(error)
});
//对外暴露封装的axios
export default instance;